import express from 'express';
const router = express.Router();

// Qwen-Plus API 配置
const QWEN_API_URL = 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation';
const API_KEY = 'sk-0de4e3a5ef6944c0885a30b98e177771';

// 调用Qwen-Plus API的代理接口
router.post('/chat', async (req, res) => {
  try {
    const { messages } = req.body;
    
    if (!messages || !Array.isArray(messages)) {
      return res.status(400).json({ 
        success: false, 
        error: '消息格式错误' 
      });
    }

    console.log('收到AI聊天请求:', { messages });

    const requestBody = {
      model: 'qwen-plus',
      input: {
        messages: [
          {
            role: 'system',
            content: '你是小健，一个超级直接、超级幽默的AI朋友！你的特点：\n1. 说话超级直接，一针见血，绝不绕弯子\n2. 用大量幽默、比喻、网络梗让回复更有趣\n3. 经常用"兄弟"、"姐妹"、"老铁"等亲切称呼\n4. 会用夸张、反讽、自嘲等方式增加趣味性\n5. 回复控制在60-120字之间，简洁有力\n6. 可以聊任何话题，但都用最直接的方式\n7. 经常用"说实话"、"别骗自己了"、"醒醒吧"等直接表达\n8. 用emoji表情增加幽默感，但不要太多\n9. 敢于说真话，不怕得罪人，但保持友好\n10. 经常用"我直接说"、"不废话"、"直入主题"等开场\n\n记住：你要像一个真实的朋友，说话直接、幽默、有态度，绝不说套话！'
          },
          ...messages
        ]
      },
      parameters: {
        temperature: 0.95,
        max_tokens: 200,
        top_p: 0.98,
        repetition_penalty: 1.3
      }
    };

    console.log('发送到Qwen API的请求体:', JSON.stringify(requestBody, null, 2));

    const response = await fetch(QWEN_API_URL, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(requestBody)
    });

    console.log('Qwen API响应状态:', response.status, response.statusText);

    if (!response.ok) {
      const errorData = await response.json();
      console.error('Qwen API错误:', errorData);
      return res.status(response.status).json({
        success: false,
        error: errorData.message || `API调用失败: ${response.statusText}`
      });
    }

    const data = await response.json();
    console.log('Qwen API响应数据:', data);

    if (!data.output || !data.output.text) {
      console.error('API返回数据格式错误:', data);
      return res.status(500).json({
        success: false,
        error: 'API返回数据格式错误'
      });
    }

    res.json({
      success: true,
      data: {
        message: data.output.text.trim(),
        usage: data.usage,
        request_id: data.request_id
      }
    });

  } catch (error) {
    console.error('AI聊天代理错误:', error);
    res.status(500).json({
      success: false,
      error: '服务器内部错误: ' + error.message
    });
  }
});

// 测试API连接
router.get('/test', async (req, res) => {
  try {
    const testMessages = [{ role: 'user', content: '你好' }];
    
    const requestBody = {
      model: 'qwen-plus',
      input: {
        messages: [
          {
            role: 'system',
            content: '你是小健，一个超级直接、超级幽默的AI朋友！请用直接、幽默的语气回复"嘿兄弟！我是小健 😎 你的直球AI朋友！不废话，直接说：不管啥问题，我都能给你最直接、最搞笑的建议！准备好被我的"毒舌"治愈了吗？"'
          },
          ...testMessages
        ]
      },
      parameters: {
        temperature: 0.7,
        max_tokens: 100
      }
    };

    const response = await fetch(QWEN_API_URL, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(requestBody)
    });

    if (!response.ok) {
      throw new Error(`API调用失败: ${response.status} ${response.statusText}`);
    }

    const data = await response.json();
    
    res.json({
      success: true,
      data: {
        message: data.output?.text?.trim() || '测试成功',
        status: 'API连接正常'
      }
    });

  } catch (error) {
    console.error('API测试失败:', error);
    res.status(500).json({
      success: false,
      error: 'API测试失败: ' + error.message
    });
  }
});

export default router;
